package com.wsoft.hr.pm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.wsoft.bpm.service.ActivityCallAble;
import com.wsoft.hr.pm.entity.HrPmMemberTemplateEntity;
import com.wsoft.hr.pm.query.activity.member.template.*;
import com.wsoft.hr.pm.query.activity.member.template.target.his.MemberTemplateSaveBatchQuery;
import com.wsoft.hr.pm.vo.member.template.MemberTemplateRespVO;
import com.wsoft.hr.pm.vo.member.template.MemberTemplateTargetVO;
import com.wsoft.hr.pm.vo.member.template.MemberTemplateVO;
import com.wsoft.hr.pm.vo.member.template.PersonTemplateVO;

/**
 * <p>
 * 人员考核活动表 服务类
 * </p>
 *
 * @author zhanggukai
 * @since 2025年02月28日 09:21:31
 */
public interface IHrPmMemberTemplateService extends IService<HrPmMemberTemplateEntity> ,ActivityCallAble {
    /**
     * 新增考核人员
     * @param query
     * @return
     */
    boolean insert(MemberTemplateInsertQuery query);


    /**
     * 批量新增考核人员
     * @param query
     * @return
     */
    void saveBatchMemTemplate(MemberTemplateSaveBatchQuery query);
    /**
     * 删除考核人员
     * @param id
     * @return
     */
    boolean delete(Long id);

    /**
     * 获取人员考核活动详情
     * @param id
     * @return
     */
    MemberTemplateRespVO getDetailTop(Long id);

    /**
     * 人员模版分页
     * @param query
     * @return
     */
    PageInfo<HrPmMemberTemplateEntity> listMemberTemplate(MemberTemplateListQuery query);

    /**
     *  获取人员模版详情
     * @param memberTemplateId
     * @return
     */
    MemberTemplateVO getMemberTemplateDetail(Long memberTemplateId);

    /**
     *  获取人员模版评分详情
     * @param memberTemplateId
     * @return
     */
    MemberTemplateVO getMemberTemplateScoreDetail(Long memberTemplateId);


    /**
     * 获取我的考评模版
     * @param query
     * @return
     */
    PageInfo<PersonTemplateVO> pagePersonMemberTemplate(PersonListQuery query);

    /**
     * 我参与的考评模版
     * @param query
     * @return
     */
    PageInfo<PersonTemplateVO> pageParticipateMemberTemplate(PersonListQuery query);
    /**
     * 保存人员模版
     * @param query
     * @return
     */
    void saveMemberTemplate(MemberTemplateSaveQuery query);

    /**
     * 暂存人员模版
     * @param query
     * @return
     */
    void tempSaveMemberTemplate(MemberTemplateSaveQuery query);
    /**
     * 获取人员模版指标分页
     * @param query
     * @return
     */
    PageInfo<MemberTemplateTargetVO> pageMemberTarget(MemberTemplateListQuery query);

    /**
     * 自评结束提交人员模版
     */
    void submitScoreStage(Long memberTemplateId);

    /**
     * 修改人员模版状态
     * @param query
     * @return
     */
    boolean updateState(MemberTemplateStateQuery query);

}
